package com.bjpowernode.controller;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.bjpowernode.entity.UmsAdmin;
import com.bjpowernode.service.UmsAdminService;
import com.bjpowernode.vo.ResultJson;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
/**
 * <p>
 * 管理员表 前端控制器
 * </p>
 *
 * @author zs
 * @since 2024-05-21
 */
@RestController
@RequestMapping("/umsAdmin")
public class UmsAdminController {

    //注入service层来进行具体业务实现
    @Resource
    UmsAdminService umsAdminService;


    //设置请求方法，进行数据查询，前端访问此请求方法
    //并进行分页查询（返回的是分页查询结果对象【此对象中包含集合，分页信息】）
    /*@GetMapping("/list")
    public IPage<UmsAdmin> list(Integer pageNo, Integer pageSize) throws InterruptedException {
        //模拟网卡时,前端通过请求访问此方法时加载分页查询数据的情况
        //TimeUnit.MILLISECONDS.sleep(2000);//休眠2秒
        //模拟程序出错时，前端的解决方案
        //System.out.println(10/0);
        //返回数据为集合，请求实现在service层
        return umsAdminService.getUmsAdminList(pageNo,pageSize);
    }*/

    //设置统一返回格式（类型时自定义vo包总的类型）
    //接收name（目的是为了进行根据姓名的的模糊查询）
    @GetMapping("/list")
    public ResultJson<IPage<UmsAdmin>> list(Integer pageNo, Integer pageSize,String name) throws InterruptedException {
        //测试统一异常处理
        //System.out.println(10/0);
        //TimeUnit.MILLISECONDS.sleep(2000);
        return ResultJson.success(umsAdminService.getUmsAdminList(pageNo,pageSize,name));
    }


    //定义请求保存新增管理员方法，接收前端返回的参数，返回是否保存成功的结果
    @PostMapping("/save")
    public ResultJson<Boolean> save(String name, String phone, String email, Integer gender, String password, MultipartFile file) {
        return ResultJson.success(umsAdminService.save(name,phone,email,gender,password,file),"添加管理员成功");
    }

    //根据id指定查询管理员信息，目的是方便后面的修改操作
    @GetMapping("/getById")
    public ResultJson<UmsAdmin> getById(String id) {
        return ResultJson.success(umsAdminService.getById(id));
    }

    //定义请求保存修改管理员方法，接收前端返回的参数，返回是否保存成功的结果
    @PostMapping("/update")
    public ResultJson<Boolean> update(String id,String name, String phone, String email, Integer gender, MultipartFile file) {
        return ResultJson.success(umsAdminService.update(id,name,phone,email,gender,file),"修改管理员成功");
    }

    //删除操作（不进行直接删除，而是控制启用禁用状态）
    @PostMapping("/delete")
    public ResultJson<Boolean> delete(String id,Boolean active) {
        return ResultJson.success(umsAdminService.delete(id,active),active?"启用管理员成功":"禁用管理员成功");
    }
}
